/*
* Copyright 2024 - 2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.jtzc.springaimcpserverwebflux;


import io.modelcontextprotocol.client.McpClient;
import io.modelcontextprotocol.client.transport.WebFluxSseClientTransport;
import io.modelcontextprotocol.spec.McpSchema;
import org.springframework.web.reactive.function.client.WebClient;

import java.util.Map;

public class ClientSse {

	public static void main(String[] args) {
		var transport = new WebFluxSseClientTransport(WebClient.builder().baseUrl("http://localhost:8080"));
		var client = McpClient.sync(transport).build();

		client.initialize();

		client.ping();

		// 列出并展示可用的工具
		McpSchema.ListToolsResult toolsList = client.listTools();
		System.out.println("可用工具 = " + toolsList);

		// 获取北京的天气预报
		McpSchema.CallToolResult weatherForecastResult = client.callTool(new McpSchema.CallToolRequest("getWeatherForecastByLocation",
				Map.of("latitude", "39.9042", "longitude", "116.4074")));
		System.out.println("北京天气预报: " + weatherForecastResult);

		// 获取北京的空气质量信息
		McpSchema.CallToolResult airQualityResult = client.callTool(new McpSchema.CallToolRequest("getAirQuality",
				Map.of("latitude", "39.9042", "longitude", "116.4074")));
		System.out.println("北京空气质量: " + airQualityResult);

		client.closeGracefully();
	}

}
